<?php
/**
 * Componente de exibição de imagens dinâmicas fora do manager.
 * A URL para o usuário fica bonita, não expõe o real caminho da imagem em disco
 * faz cache das imagens redimensionadas
 * 
 * Configura as coisas em http://site.com/manager/graphs
 * 
 * @author Níssius Ribas
 */

class graph extends NT_Default_Controller {
    
    public function index($idf,$width,$height,$image){
        
        $this->load->model("nt_global_graphs");
        
        $esteGrupo = $this->nt_global_graphs->getBy("IDENTIFICADOR", $idf);
        
        if(count($esteGrupo) > 1)
            die("The image identifer you requested was not found. Check configuration and params passed");
        
        $esteGrupo = $esteGrupo[0];
        
        // o tamanho passado é valido
        $sInformado = $width."x".$height;
        if(!preg_match("/$sInformado/", $esteGrupo['ALLOWED_SIEZES']))
                die("The requested image size is not allowed. Check configurations and size requested.");
        
        
        // pega o codigo do registro fora do pattern, o código sempre
        // está no fim da string exemplo: qualquer-coisa-15.jpg (código = 15)
        $segments = explode('-',$image);
        $total = count($segments);
        $final = explode(".",$segments[$total-1]);
        
        $id = intval($final[0]);
        
        // busca os dados desta imagem da tabela que ela é
        $rs = $this->db->select("{$esteGrupo['CAMPO']}")
                       ->where("ID",$id)
                       ->get($esteGrupo['TABELA'])->row_array();
        $foto = $rs["{$esteGrupo['CAMPO']}"];
        
        // qual é o path em disco desta imagem original?
         $full_path = $this->config->item("local_disk_url").$esteGrupo['DISKPATH'].$foto;
         
         
         if(!file_exists($full_path))
             die("This image not exists in file system");
         
         $fileInfo = pathinfo($full_path);
         
         $ext = $fileInfo['extension'];
         
         $cachedPath = $full_path.$width."x".$height.".".$ext;

         $this->load->library("wideimage");
                 
         // se o arquivo cacheado ja existe, carrega ele
         if(file_exists($cachedPath)){
             
             $this->wideimage->load($cachedPath)->output($ext);
             
         } else { // se nao gera e carrega
         //
             // resize
             $this->wideimage->load($full_path)->resize($width,$height)->saveToFile($cachedPath);
             
             // load it
             $this->wideimage->load($cachedPath)->output($ext);
         }

    }
    
}
